// copyright jyz.2024

#pragma once

#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
/**
 * Singleton containing native Gameplay Tags
 */
struct AURARPGDEMO_API FAuraGameplayTags
{
public:
	static FAuraGameplayTags& Get() {return g_GameplayTags;}
	void InitializeNativeGameplayTags();
	//至关重要的属性
	FGameplayTag AS_Vital_Health;
	FGameplayTag AS_Vital_Mana;
	//Primary Attributes(主要的)
	//力量
	FGameplayTag AS_Primary_Strength;
	//智力
	FGameplayTag AS_Primary_Intelligence;
	//恢复力
	FGameplayTag AS_Primary_Resilience;
	//活力
	FGameplayTag AS_Primary_Vigor;
	//次要属性（依赖主要属性）--->Secondary Attributes
	//护甲
	FGameplayTag AS_Sec_Armor;
	//穿甲
	FGameplayTag AS_Sec_ArmorPiercing;
	//格挡率
	FGameplayTag AS_Sec_BlockChance;
	//暴击率
	FGameplayTag AS_Sec_CriticalChance;
	//暴击伤害
	FGameplayTag AS_Sec_CriticalDamage;
	//暴击抗性
	FGameplayTag AS_Sec_CriticalHitResistance;
	//每秒回血能力
	FGameplayTag AS_Sec_HealthRegeneration;
	//每秒回蓝能力
	FGameplayTag AS_Sec_ManaRegeneration;
	FGameplayTag AS_Sec_MaxHealth;
	FGameplayTag AS_Sec_MaxMana;


	//**********************************  Input 相关标签  ***********************************//
	FGameplayTag InputTag_LMB;
	FGameplayTag InputTag_RMB;
	FGameplayTag InputTag_MMB;
	FGameplayTag InputTag_1;
	FGameplayTag InputTag_2;
	FGameplayTag InputTag_3;
	FGameplayTag InputTag_4;
	FGameplayTag InputTag_5;
	FGameplayTag InputTag_6;

	//**********************************  Damage 相关标签  ***********************************//
	FGameplayTag Damage;

	//**********************************  受击 相关标签  ***********************************//
	FGameplayTag Effects_HitReact;
private:
	void InitAttributeSetGameplayTags();
	void InitInputGameplayTags();
	void InitDamageGameplayTags();
	void InitEffectsGameplayTags();
private:
	static FAuraGameplayTags g_GameplayTags;
};
